import request from '@/config/axios'
import type { Dayjs } from 'dayjs';
import { pa } from 'element-plus/es/locale';

/** 表列信息 */
export interface Table {
          id: number; // Id
          primaryKey: string; // 主键
          databaseName: string; // 数据库名
          tableName: string; // 表名
          tableDes: string; // 表描述
          downUrl: string; // 页面模式
          templateId: number; // 模板编号
          templateParam: string; // 页面模式
          userId: number; // 用户编号
          apifoxAdmin: string; // apifox管理端项目
          apifoxApi: string; // apifox用户端项目
  }
/*
script: str  # 脚本内容
    databaseName: str  # 数据库名称
    templateId: int  # 模板ID
    templateParam: Optional[Dict[str, Any]] = None  # 模板参数
*/
export interface TableGenerate {
  script: string; // 脚本内容
  databaseName: string; // 数据库名称
  templateId: number; // 模板ID
  templateParam: any; // 模板参数
}
// 表列 API
export const TableApi = {
  ///table/simple-list
  getSimpleList: async (params) => {
    return await request.get({ url: `/infra/table/simple-list`,params })
  },
  // 查询表列分页
  getTablePage: async (params: any) => {
    return await request.get({ url: `/infra/table/page`, params })
  },

  // 查询表列详情
  getTable: async (id: number) => {
    return await request.get({ url: `/infra/table/get?id=` + id })
  },

  ///table/get-detail
  getTableDetail: async (id: number) => {
    return await request.get({ url: `/infra/table/get-detail?id=` + id })
  },
  // updateCodegenTable
  updateCodegenTable: async (data) => {
    return await request.post({ url: `/infra/table/update-codegen-table`, data })
  },

  // 新增表列
  createTable: async (data: Table) => {
    return await request.post({ url: `/infra/table/create`, data })
  },

  // 修改表列
  updateTable: async (data: Table) => {
    return await request.put({ url: `/infra/table/update`, data })
  },

  // 删除表列
  deleteTable: async (id: number) => {
    return await request.delete({ url: `/infra/table/delete?id=` + id })
  },

  /** 批量删除表列 */
  deleteTableList: async (ids: number[]) => {
    return await request.delete({ url: `/infra/table/delete-list?ids=${ids.join(',')}` })
  },

  // 导出表列 Excel
  exportTable: async (params) => {
    return await request.download({ url: `/infra/table/export-excel`, params })
  },
  // /table/test
  test: async (tableId) => {
    return await request.get({ url: `/infra/table/test`, params:{ tableId:tableId } })
  },
  // /table/import
  import: async (data:TableGenerate) => {
    return await request.post({ url: `/infra/table/import`, data })
  },
  // /table/generate
  generate: async (tableIds) => {
    return await request.post({ url: `/infra/table/generate`, data:{ tableIds:tableIds } })
  },
  // /table/get-templates
  getTemplates: async () => {
    return await request.get({ url: `/infra/table/get-templates` })
  },
  downloadCodegen: async (tableIds,model=1) => {
    return await request.download({ url: `/infra/table/download-codegen?ids=${tableIds.join(',')}&model=${model}&siteUrl=${window.location.origin}` })
  },
}